//在一个类中可以编写一些方法
//方法的结构：
//1.public 访问修饰符号，static静态修饰符号     --可选
//2.void返回值类型 						--必选
//3.main方法名称  						--必选
//4.(string [] args)参数列表			--参数变量可选，括号必须有
//5.{大括号称为方法体}					--在非抽象方法中必须有大括号部分，抽象方法没有方法体

package com.shangke.corejava.ch4;
import java.util.Arrays;//java语言的API工具类，这是对数值进行操作的工具
public class SortClass {
	public static void main(String[] args) {
		//给定一个int类型的数组，保持班级同学的年龄
		//编写一个算法对年龄进行排序，分别进行升序和降序排序
		int ages[] = {22,28,20,24,22,26,18,27};
		
		printArray(ages);//方法调用
		bubbleSortDesc(ages);//方法调用
		
		int ages2[] = {22,28,20,24,22,26,18,27,23};
		Arrays.sort(ages2);//是升序排序
		printArray(ages2);
		//排序的使用思路：先按照特定规则进行排序，如果需要升序或降序，只需要反向输出即可
		for(int i=ages2.length-1;i>=0;i--){
			System.out.print(ages2[i]+"\t");
		}
		
		for(int i=1;i<ages.length;i++){
			for(int j=0;j<ages.length-i;j++){
				if(ages[j] > ages[j+1]){//升序和降序控制。大于号是降序排序，小于号是升序排序
					int t=ages[j];
					ages[j]=ages[j+1];
					ages[j+1]=t;
				}
			}
		}
	}
	public static void printArray(int[] data) {
		for(int d:data){
			System.out.print(d+"\t");
		}System.out.println();
		
	}
	public static void bubbleSortDesc(int[] data) {
		if(data==null) return;
		for(int i=0;i<data.length;i++){
			for(int k=0;k<data.length-1-i;k++){
				int tmp=data[k];
				if(data[k]<data[k+1]){
					data[k]=data[k+1];
					data[k+1]=tmp;
				}
			}
		}
	}
}

